	JMP PFNSTART	;$4000 - entry point for entire program
	JMP DISPDIR	;$4003 - reload catalog and wait for next event
	JMP DISPDIRS	;$4006 - reload catalog with same file selected and wait for next event
	JMP DISP	;$4009 - redraw the screen and wait for next event
	JMP DISP0	;$400C - redraw starting with the prefix and wait for next event
	JMP DISPCAT	;$400F - redraw the catalog and wait for next event
	JMP DISPCAT2	;$4012 - redraw the catalog over the existing one and wait for next event
	JMP KBDLOOP	;$4015 - wait for next event
	JMP ISNTUPER	;$4018 - start of keyboard checklist; this is used to patch the keyboard, since each check is exactly 7 bytes long
	JMP READDIR	;$401B - read the current directory into the catalog
	JMP PRINTCAT	;$401E - print the catalog
	JMP DISKSPC	;$4021 - recalculate disk space
	JMP KRSTDISP	;$4024 - completely reload the screen, 80-column mode and all
	JMP A80COLON	;$4027 - turn 80-columns on
	JMP A80COLOFF	;$402A - turn 80-columns off
	JMP TEXT	;$402D - text mode
	JMP LOWRESGR	;$4030 - lo-res mode
	JMP DBLOWRES	;$4033 - double lo-res mode
	JMP HIRESGR	;$4036 - hi-res mode
	JMP DBLHIRES	;$4039 - double hi-res mode
	JMP MAINMEM	;$403C - main memory access
	JMP AUXMEM	;$403F - auxiliary memory access
	JMP NORMAL	;$4042 - normal video
	JMP INVERSE	;$4045 - inverse video
	JMP CLRSCRN	;$4048 - clear screen
	JMP SETPOS	;$404B - set cursor position in X and Y
	JMP TXTUNWDW	;$404E - set text window to whole screen
	JMP TXTWINDW	;$4051 - set text window to inside lines
	JMP TXTPRWDW	;$4054 - set text window to bottom line (prompt line)
	JMP PRINTSTR	;$4057 - print a string with address in X,Y
	JMP PRSTR6F	;$405A - print a string in $6F00
	JMP PRHISTXY	;$405D - print a string with address in X,Y, high or low ascii
	JMP PRHISTR	;$4060 - print a string in $6F00, high or low ascii
	JMP PRINTCR	;$4063 - print carriage return
	JMP BEEP	;$4066 - beep
	JMP SMILE	;$4069 - display a smiley face at the bottom of the screen for two seconds
	JMP XPERIODS	;$406C - print periods; number in X
	JMP PRINTNUM	;$406F - print a number in X,Y
	JMP PRNMDIV2	;$4072 - print a number in X,Y divided by 2; ".5" is printed if the number is odd
	JMP MINIED24	;$4075 - print leftmost two decimal digits of X
	JMP HEXSTRNG	;$4078 - convert string of hex digits in $6F00 to 5-byte big-endian number in $EB-$EF
	JMP STREQU	;$407B - compare Pascal strings, case-sensitive; addresses of strings in $FA-$FD, zero flag set if strings are equal
	JMP STREQI	;$407E - compare Pascal strings, case-insensitive; addresses of strings in $FA-$FD, zero flag set if strings are equal
	JMP PRINTYPE	;$4081 - print ProDOS file type in X
	JMP PRDATIME	;$4084 - print date and time in ProDOS format in $FA-$FD
	JMP PFNPRMPT	;$4087 - ask for user input; address of prompt string in X,Y, number of dots in A, input at $6F00
	JMP GETCHAR	;$408A - get a character; input in A
	JMP GETLINE	;$408D - get a line of keyboard input; input in $200
	JMP GETLN6F	;$4090 - get a line of keyboard input; input in $6F00
	JMP GETFADDR	;$4093 - get the address of a file's catalog entry; file number in X, address returned in $CE-$CF
	JMP GETPRFX	;$4096 - get current prefix in $6F00
	JMP SETPRFX	;$4099 - set current prefix to $6F00
	JMP CHEKPRFX	;$409C - check current prefix; if we're at the ONLINE level, carry is set; current prefix is in $6F00
	JMP GETNAME	;$409F - get name of currently selected file in $6F00
	JMP GETPATH	;$40A2 - get full path to currently selected file in $6F00
	JMP FINDDEVN	;$40A5 - find a volume's device number; path to or name of volume in $6F00, device number returned in A and X
	JMP CLEARPGE	;$40A8 - clear page Y of memory
	JMP CLEARBUF	;$40AB - clear $2000-$3FFF
	JMP CLRBUF2	;$40AE - clear $1900-$3FFF
	JMP XFERFREF	;$40B1 - transfer directory entry to catalog entry; address of dir entry at $06-$07, address of cat entry at $CE-$CF
	JMP XFERGR	;$40B4 - transfer lo-res graphics from $800 to $400 without touching screen holes
	JMP XFERGRA	;$40B7 - transfer lo-res graphics from main $800 to auxiliary $400 without touching screen holes
	JMP XFERAUXH	;$40BA - transfer main $2000-$3FFF to auxiliary $2000-$3FFF
	JMP PROTDHR	;$40BD - protect DHR auxiliary memory from being overwritten by files in RAM disk
	JMP DPROTDHR	;$40C0 - unprotect DHR auxiliary memory
	JMP STDRTS	;$40C3
	JMP STDRTS	;$40C6
	JMP STDRTS	;$40C9
	JMP STDRTS	;$40CC
	JMP STDRTS	;$40CF
	JMP STDRTS	;$40D2
	JMP STDRTS	;$40D5
	JMP STDRTS	;$40D8
	JMP STDRTS	;$40DB
	JMP STDRTS	;$40DE
	JMP STDRTS	;$40E1
	JMP STDRTS	;$40E4
	JMP STDRTS	;$40E7
	JMP STDRTS	;$40EA
	JMP STDRTS	;$40ED
	JMP DBGERR0	;$40F0 - make "Blocks Available" display the current value of A
	JMP DBGERR1	;$40F3 - make "Blocks Used" display the current value of A
	JMP DBGERR2	;$40F6 - make "Blocks Total" display the current value of A
	JMP $1800	;$40F9 - transfer control to SYS file; path in $6F00
	JMP PFNQUIT	;$40FC - quit ProDOS File Navigator
	.byte $30	;$40FF - PFN version number
